package plp.funcoo.expression.structure;

import plp.funcoo.dec.var.VarDeclaration;
import plp.funcoo.environment.compilation.CompilationEnvironment;
import plp.funcoo.environment.compilation.Environment;
import plp.funcoo.environment.execution.ExecutionEnvironment;
import plp.funcoo.exceptions.ClassAlreadyDeclared;
import plp.funcoo.exceptions.ClassNotDeclared;
import plp.funcoo.exceptions.MethodAlreadDeclared;
import plp.funcoo.exceptions.MethodNotDeclared;
import plp.funcoo.exceptions.VarAlreadyDeclared;
import plp.funcoo.exceptions.VarNotDeclared;
import plp.funcoo.expressions.Expression;
import plp.funcoo.util.Type;

public class ForExpression implements Expression{

	
	private VarDeclaration varDeclaration;
	private Expression expression1;
	private Expression expression2;
	
	public ForExpression(VarDeclaration varDeclaration,Expression expression1,Expression expression2 )
	{
		this.varDeclaration = varDeclaration;
		this.expression1 = expression1;
		this.expression2 = expression2;
	}
	
	
	@Override
	public ExecutionEnvironment evaluate(ExecutionEnvironment envi) throws VarNotDeclared, MethodNotDeclared, VarAlreadyDeclared, MethodAlreadDeclared {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public boolean typeCheck(CompilationEnvironment envi)
			throws VarAlreadyDeclared, VarNotDeclared, ClassAlreadyDeclared,
			ClassNotDeclared {
		// TODO Auto-generated method stub
		return false;
	}
	@Override
	public Type getType(Environment envi) throws VarNotDeclared,
			ClassNotDeclared {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public Expression makeCopy() {
		// TODO Auto-generated method stub
		return null;
	}
}
